/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyecto1.Manager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import proyecto1.GestionDB;
import proyecto1.TO.SocioTO;

/**
 *
 * @author alex
 */
public class SocioMannager {
    
     GestionDB cnn = new GestionDB();

    public List<SocioTO> listar() throws Exception {
        ArrayList data = new ArrayList();
        String sql = "SELECT * FROM socio";

        cnn.conectar();
         try (ResultSet rs = cnn.ejecutarConsulta(sql)) {
             while (rs.next()) {

                 SocioTO t = new SocioTO();

                 t.setDNI(rs.getString("DNI"));
                 t.setApellido_paterno(rs.getString("apellido_paterno"));
                 t.setFecha_nacimineto(rs.getString("Fecha_Nacimiento"));
                 t.setFecha_inscripcion(rs.getString("Fecha_Inscripcion"));
                 t.setCantida_hijos(rs.getString("Cantidad_hijos"));
                 t.setSexo(rs.getString("Sexo"));
                 t.setApellido_materno(rs.getString("apellido_materno"));
                 t.setNombres_socio(rs.getString("nombres_socio"));
                 data.add(t);

             }
         }
        cnn.desconectar();
        return data;
    }

    public void Agregar(SocioTO data) throws Exception {

        String sql = "INSERT INTO socio(DNI,nombres_socio,apellido_paterno,apellido_materno,Sexo,Cantidad_hijos,Fecha_Nacimiento,Fecha_Inscripcion) VALUES (?,?,?,?,?,?,?,?)";
        Connection c = null;
        try {
            c = cnn.conectar();
            c.setAutoCommit(false);
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setString(1, data.getDNI());
            ps.setString(2, data.getNombres_socio());
            ps.setString(3, data.getApellido_paterno());
            ps.setString(4, data.getApellido_materno());
            ps.setString(5, data.getSexo());
            ps.setString(6, data.getCantida_hijos());
            ps.setString(7, data.getFecha_nacimineto());
            ps.setString(8, data.getFecha_inscripcion());
            ps.executeUpdate();
            c.commit();
            ps.close();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            c.rollback();
        } finally {
            cnn.desconectar();
        }
    }

    public SocioTO buscaPorid(Object id) throws Exception {
        SocioTO t = null;
        String sql = "SELECT * FROM socio WHERE DNI=" + id;
        //DNI,nombres_socio,apellido_paterno,apellido_materno,Sexo,Cantidad_hijos,Fecha_Nacimiento,Fecha_Inscripcion
        try {
            cnn.conectar();
            ResultSet rs = cnn.ejecutarConsulta(sql);
            if (rs.next()) {
                t = new SocioTO();
                t.setDNI(rs.getString("DNI"));
                t.setNombres_socio(rs.getString("nombres_socio"));
                t.setApellido_paterno(rs.getString("apellido_paterno"));
                t.setApellido_materno(rs.getString("apellido_materno"));
                t.setSexo(rs.getString("Sexo"));
                t.setCantida_hijos(rs.getString("Cantidad_hijos"));
                t.setFecha_nacimineto(rs.getString("Fecha_nacimiento"));
                t.setFecha_inscripcion(rs.getString("Fecha_Inscripcion"));
                
            }
            rs.close();
            cnn.desconectar();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }

        return t;
    }

//________________________editar 
    public void Editar(SocioTO data) throws Exception {
        String sql = "UPDATE socio SET nombres_socio=?,apellido_paterno=?,apellido_materno=?,Sexo=?,Cantidad_hijos=?,Fecha_Nacimiento=?,Fecha_Inscripcion=? WHERE DNI=?";
        
        Connection c = null;
        //DNI,nombres_socio,apellido_paterno,apellido_materno,Sexo,Cantidad_hijos,Fecha_Nacimiento,Fecha_Inscripcion
        try {
            c = cnn.conectar();
            c.setAutoCommit(false);
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setString(8, data.getDNI());
            ps.setString(1, data.getNombres_socio());
            ps.setString(2, data.getApellido_paterno());
            ps.setString(3, data.getApellido_materno());
            ps.setString(4, data.getSexo());
            ps.setString(5, data.getCantida_hijos());
            ps.setString(6, data.getFecha_nacimineto());
            ps.setString(7, data.getFecha_inscripcion());
            ps.executeUpdate();
            c.commit();
            ps.close();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            c.rollback();
        } finally {
            cnn.desconectar();
        }

    }

    //----------------------------------Eliminar
    public void eliminar(String id) throws Exception {
        try {
            Connection c = cnn.conectar();
            String sql = "DELETE FROM socio WHERE DNI=?";
            PreparedStatement ps = c.prepareStatement(sql);
            ps.setString(1, id);
            ps.executeUpdate();
            ps.close();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        } finally {
            cnn.desconectar();
        }

    }
    public List<SocioTO> buscaPorDescripcion(Object des)throws Exception{
   ArrayList data = new ArrayList();
        SocioTO t=null;
   String sql="SELECT * FROM socio WHERE apellido_paterno LIKE'"+des+"%'";
       try {
       cnn.conectar();
       try (ResultSet rs = cnn.ejecutarConsulta(sql)) {
           while(rs.next()){
           t=new SocioTO();
                 t.setDNI(rs.getString("DNI"));
                 t.setApellido_paterno(rs.getString("apellido_paterno"));
                 t.setFecha_nacimineto(rs.getString("Fecha_Nacimiento"));
                 t.setFecha_inscripcion(rs.getString("Fecha_Inscripcion"));
                 t.setCantida_hijos(rs.getString("Cantidad_hijos"));
                 t.setSexo(rs.getString("Sexo"));
                 t.setApellido_materno(rs.getString("apellido_materno"));
                 t.setNombres_socio(rs.getString("nombres_socio"));
                data.add(t);
           }
       }
           cnn.desconectar();
           
       } catch (Exception e) {
       JOptionPane.showMessageDialog(null, e.getMessage());
       }
   
   return data;
   }
    
    
}
